Python
center|500px Python (рус. Питон) — язык программирования, в среде MediaWiki и применяющийся преимущественно для создания ботов. Язык ориентирован на повышение производительности разработчика и читаемости кода. Синтаксис Python минималистичен; согласно философии языка: «Простое лучше, чем сложное». На данный момент существуют две широко используемые, но в то же время взаимоисключающие версии языка: 2 и 3 (код, написанный на второй версии, может не запуститься на третьей, и наоборот). Программы Python имеет расширение файлов .py. Установка Большинство "исполнителей" Python'а являются интерпретаторами (хотя существуют и компиляторы Python'а), и его код всегда исполняется в них немедленно. В отличие от JavaScript, где код исполняется прямо в браузере участника, Python может потребовать установки отдельного интерпретатора на компьютер участника. Интерпретатор превратит код, написанный на этом языке, в инструкции, понятные компьютеру. Интерпретатор Как правило, во многих дистрибутивах Linux же установлены интерпретаторы обеих версий Python. В macOS обычно установлен интерпретатор для второй версии. Проверить наличие интерпретатора, а также узнать версию языка можно, введя в терминал (или командную строку) команду python (для Python 2) и/или python3 (для Python 3). При этом в терминале должна появиться примерно следующая запись (она зависит от версии языка и операционной системы): Python 2.7.10 (default, Aug 17 2018, 17:41:52) 4.2.1 Compatible Apple LLVM 10.0.0 (clang-1000.0.42) on darwin Type "help", "copyright", "credits" or "license" for more information. >>> Если выводится надпись о том, что команда не найдена, это значит, что Python на компьютере всё же не установлен. На Linux и macOS можно установить интерпретатор языка, используя менеджер пакетов. Например, на Ubuntu установить последнюю версию Python 3 можно следующей командой: sudo apt install python3 Найти все версии языка для своей операционной системы можно и на официальном сайте Python. Здесь же находятся графические установщики для Windows и macOS. В Windows установщик Python предлагает выбрать пользователей, у которых будет установлен этот язык, и место на жестком диске. На macOS установщик этой же версии языка состоит из 7 частей: введение (кратко рассказывается об устанавливаемой программе, и зачем она нужна), информация, лицензия (если её не принять, то программа не установится), размещение, тип установки, сама установка и обзор. В части A лицензии содержится история о программном обеспечении. Установка Python (whether).png|Установка на Windows #1 Установка Python (destination).png|Установка на Windows #2 Установка Python. Введение.png|Установка на macOS #1 Установка Python. Информация.png|Установка на macOS #2 Установка Python. Лицензия.png|Установка на macOS #3 Установка Python. Лицензия (принять).png|Установка на macOS #3 IDLE thumb|250px|Интерактивный режим Новички в Python могут использовать IDLE (ориг. Integrated Development and Learning Environment). Эта программу можно найти на всё том же официальном сайте Python, а также в интернет-репозиториях (для пользователей Linux). Программа является упрощённой формой IDEЗабавно, что её название похоже на IDE, хотя она и названа в честь Эрика Айдла (англ. Eric Idle)., и способна работать в двух режимах: интерактивном и сценарном (иногда называют основным или пакетным). В первом режиме при вводе какой-либо инструкции она тут же выполняется (по своей сути она подобна интерпретатору, запущенному в интерактивном режиме, с расширенным набором возможностей). left|250px|Сценарный режим В сценарном режиме (который открывается, если в интерактивном создать новый файл) пишется программный код, после чего запускают получившуюся в итоге программу. Таким образом основной режим IDLE — это текстовый редактор, в котором программист пишет какой-либо код. Разумеется, вместо этой программы можно использовать обычный блокнот (файл нужно сохранить с расширением .py, после чего запустить в интерпретаторе). Более опытные пользователи могут использовать интегрированную среду разработки (IDE), например Microsoft Visual Studio, PyCharm, Xcode или другие. IDE включают в себя множество инструментов для быстрой и эффективной разработки программ. Каталог пакетов Python Возможности Python можно расширить, подключая к программе дополнительные пакеты. Существует Python Package Index (рус. Каталог пакетов Python), в котором по состоянию на декабрь 2018 года содержится более 162 000 сторонних пакетов. Существует несколько методов установки пакетов. Предпочтительным методов является использование программы pip. Получить информацию о её установки можно на официальном сайте (англ.) или других источниках. При использовании pip для установки самих пакетов нужно ввести команду (в терминал или командную строку), где name — название пакета (если вдобавок установлен Python 2, то надо использовать pip3): pip install name а для удаления: pip uninstall name Характеристика Основы Достоинством Python является поддержка различных стилей программирования: объектно-ориентированного, структурного, функционального или других. Язык управляет памятью автоматически, используя сборщик мусора. На данный момент актуальны версии 2.7 (с 3 июля 2010) и 3.7 (с 27 июня 2018)Download Python. Как уже отмечалось в статье, Python имеет две версии, отличающиеся друг от друга (о различиях можно узнать в документации). Например, программа, выводящая какой-то текст и ожидающая ввод строки, на Python 2 выглядит так: a = raw_input('String: ') print a Но вот в Python 3 уже иным образомPython 2 тоже имеет функцию input(), но если ввести строку, то появится ошибка NameError.: a = input('String: ') print(a) Поддержка Python 2 будет прекращена в начале 2020 годаPEP 373 Python 2.7, при этом релиз 2.8 не планируетсяPEP 404 Python 2.8. Python 3 и Python 2 в целом обладает относительно простым синтаксисом, благодаря чему его сможет быстро освоить не только программист, знающий какой-либо другой язык, но и новичок, никогда не программировавший ранее. Точку с запятой (;) в конце команды ставить необязательно, хотя это и допускается. Чаще всего её используют при написании нескольких команд в одной строке: a = "Hello World!"; b = 46 print(a) print(b) Для вложенного блока инструкций используются отступы (либо пробел (-ы), либо табуляция, но последний вариант не рекомендуется разработчиками языкаPEP 8 Style Guide for Python Code; обычно опытные программисты используют 4 пробела). Если этого не сделать, то интерпретатор выдаст ошибку IndentationError (эта же ошибка может выйти, если в следующий раз не написано одинаковое количество пробелов или табуляций). Основная же инструкция, к которой относится этот вложенный блок, всегда заканчивается двоеточием :, напримерКомментарии начинаются со знака решетки #, и все символы, написанные после комментария игнорируются интерпретатором.: b = 52 if b 52: print('Hello World!') # здесь не используются пробелы, значит, дальнейший код — это вне инструкции b = input('Number: ') Пример ошибок IndentationError (с перечнем ошибок можно ознакомиться здесь): b = 78 # в самом начале строки находится лишний пробел if b 78: print('Hello World!') b = input('Number: ') # здесь на 1 пробел больше, чем в предыдущей строке i = 1 # а здесь на 4 пробела меньше, чем в предыдущей строке Идеально же программный код без ошибок IndentationError должен выглядеть таким образом: b = 78 # в самом начале строки отсутствуют какие-либо отступы if b 78: print('Hello World!') b = input('Number: ') # столько же пробелов, сколько и в предыдущей строке i = 1 # аналогично верхнему комментарию # дальнейший код, написанный без каких-либо отступов — это код вне инструкций Программа, написанная на Python, может импортировать модуль и получить доступ к его классам, функциям и объектам. Стоит отметить, что модуль может быть написан не только на этом языке программирования, а например, на C/C++Создание расширения C++ для Python. Его подключить можно с помощью инструкции import, напримерО модулях time и random можно почитать в соответствующих статьях https://docs.python.org/3/library/time.html и https://docs.python.org/3/library/random.html: import time import random Однако с помощью этой одной инструкции можно подключить несколько модулей, написанные через запятую (правда, это противоречит стандарту Python'а PEP): import time, random Для импортированных модулей можно создать псевдоним с помощью ключевого слова as. Тогда доступ к классам, функциям и объектам этого модуля можно будет получить не через полное имя, а только через псевдоним, например (clock — это функция из модуля time): import time as t t.clock() time.clock() # если здесь вместо t написать time, то выйдет ошибка NameError # а если обратиться к классу, функции или объекту, которого не существует: t.текст # выйдет ошибка AttributeError В идеальном виде программный код без этих видов ошибок должен выглядеть таким образом (в этом примере модуль time импортируется без псевдонима): import time time.clock() Если нужно из модуля импортировать только один определённый атрибут, то используют инструкцию from, при этом import уже означает тот атрибут, который нужно импортировать, которому также можно задать псевдоним: from time import clock as c c() # это функция clock() с псевдонимом c, импортированная из модуля time Так же можно сделать так, чтобы импортировались все команды: from time import * Переменные Переменные используются для записи какой-либо информации в занятую ячейку оперативной памяти запущенной на компьютере программой, а также для упрощения обращения к этой области памяти. Иными словами, программисту, который хочет обратиться к данным, записанные в этой ячейке, придется вводить не полный адрес ячейки оперативной памяти, а название созданной переменной. При каждом новом запуске программы значение (информация) переменной может менять свою ячейку, поэтому вариант обращения к области памяти не через название переменной — наименее оптимальный. Переменные могут быть локальными и глобальными. Локальные переименные действуют в определённом участке кода, в то время как к глобальным можно обратиться в любом месте. В языке Python к глобальным переменным обращаются командой global. Яркий пример, изображающий две разные переменные с одинаковым именем: a = 82 def func(): a = 4 # локальная переменная func() # вызов функции print(a) # выведется число 82 a = 82 def func(): global a # обращение к глобальной переменной a = 4 func() # вызов функции print(a) # выведется число 4 a = 82 def func(): print(a) # обращение к глобальной переменной # так как к переменной ничего не присваивается, то и команда global не нужна func() # вызов функции print(a) # выведется число 82 Для создания переменной в Python достаточно ввести ее имя и тут же связать с каким-либо значением через знак присваивания =Во многих языках, в том числе и в Python, знак присваивания — это одно равно =, а два равно подряд стоящих — это «равно» . Конечно, есть языки, в которых все иначе, например в Паскале знак присваивания — это двоеточие со знаком равно :=, а «равно» — =, иначе интерпретатор не поймет, к какому типу данных относится новая переменна, и выйдет ошибка NameError, например: a = 56 # целое число b = True # булевый тип c = 3.14 # число с плавающей точкой; вместо запятой используется точка (!) d = "" # пустая строка e; # выйдет ошибка NameError Python — это язык с динамической типизацией, то есть он определяет тип данных переменной исходя из присвоенного ей значения. Значение переменной (и её тип данных) можно изменять. Для того чтобы узнать, к какому типу данных относится та или иная переменная, применяется функция type(): a = "9" print(type(a)) # тип данных: str (строка) a = 81 print(type(a)) # тип данных: int (целое число) a = 72.99 print(type(a)) # тип данных: float (число с плавающей точкой) Если попытаться сложить две переменные разных типов данных, то выйдет ошибка TypeError, например: a = "9" # str b = 81 # int c = 72.99 # float d = a + b + c # ошибка TypeError Чтобы это исправить, необходимо поэтапно привести все переменные к одному типу данных: a = "9" # str b = 81 # int c = 72.99 # float d = int(a) + b + int© # int # если переменную c не привести к типу данных int, то переменная d будет d = int(a) + b + c # float Операторы ветвления Иногда нужно проверить какую-то информацию и на основе этого результата сделать определенные действия. Для всего этого в языках существует ветвление. Результатом проверки данных может быть: * либо True (правда), при которой код программы продолжается во вложенном блоке инструкции, а остальные операторы ветвления (если они есть) будут игнорироваться; * либо False (ложь), при которой код программы, находящийся во вложенном блоке инструкции, игнорируется и проверяется следующий оператор ветвления (если он есть). Ниже представлена программа, в которой переменная a проверяется: * начало операторов ветвления всегда начинается с части if, после которой идет условие; * дальше может идти несколько необязательных частей elif, после каждой из которых идет условие; * конец — это часть else, которая не требует условия и также необязательна. В отличие от остальных частей, else выполняется, если результат всех предыдущих частей — false b = 13 a = input("Number: ") if a 12: # — это знак «равно» print("It is 12") elif a != b: # != — это знак «неравно» print("It is not 13") elif a > 13: print("It is not 13") elif a < 13: print("It is not 13") elif a <= 13: # <= — это знак «меньше или равно» print("It is not 14") elif a >= 13: # <= — это знак «больше или равно» print("It is not 12") else: print("I don't know") В языке Python существуют логические операторы, которые позволяют усложнять условия: * and. Результат true будет, если результат обоих условий — true if 10 10 and 10 9: # False, так как второе условие не выполняется * or. Результат true будет, если хотя бы один результат из двух условий — true if 10 10 or 10 9: # True, так как первое условие выполняется * not. Результат true будет, если результат условия — false if not 10 != 10: # True, так как результат условия False Циклы В программировании иногда нужно сделать какие-либо действия несколько раз, это можно сделать, например, так: print("Hello World!") print("Hello World!") print("Hello World!") Однако этот способ не идеален, во-первых, он делает код менее читабелен; во-вторых, он может подойти, если известно, сколько раз нужно повторить одно и то же действие. Очень часто бывают такие ситуации, когда нужно повторить один и тот же участок кода несколько раз, при этом не зная точное число повторов. В языке Python присутствуют два цикла: for и while. Стоит учитывать, что первый — это не цикл со счетчиком. В отличие от других языков (например C/C++ или Java), в Python он предназначен для перебора элементов структур данных и некоторых других объектов. Например, приведена программа, которая выводит цифры от 2 до 6 с помощью цикла for (он проходится по любому итерируемому объекту, и во время каждого прохода выполняет тело цикла): for i in (1, 2, 3, 4, 5): print(i + 1) или программа, которая выводит текст c удвоенными буквами: for i in 'Python is my life': print(i * 2) Цикл while же, как и во многих языках, со счетчиком. Например, программа, выводящая несколько раз надпись одну и ту же надпись (по сути, выполняет один и тот же участок кода). Количество повторов выбирается генератором псевдослучайных чисел: # импортируется атрибут random из модуля random from random import random as rand # и ему присваивается псевдоним rand a = int(rand() * 10) # эта функция возвращает число в диапазоне 1.0) i = 1 # переменная для подсчета повторов цикла while i <= a: print("Hello World!") i += 1 # в конце цикла к переменной i добавится единица Кроме этого, те же самые программы, написанные с помощью цикла for можно можно переписать таким образом (разница состоит лишь в том, что некоторые переменные или списки придется создать вне инструкции): i = 1 while i < 6: print(i + 1) i += 1 i = 0 a = 'Python is my life' while i < len(a): # len() возвращает количество элементов списка print(a[i * 2) i += 1 При разработке программ стоит понимать, что цикл while, в отличие от for, хоть и более универсальный, но выполняется медленнее. Использование На языке Python написано несколько программ, предназначенных для использования на , например: * Pywikibot — это фреймворк, он включает в себя большое количество скриптов (с их списком можно ознакомиться здесь), при помощи которых можно в автоматическом или полуавтоматическом редактировать страницы вики. В отличие от AutoWikiBrowser не имеет графического интерфейса (используется терминал) и более сложен в настройке. Версии языка: Python 2.7 или 3.4Pywikibot OverviewWelcome to Pywikibot!. * VicBot — это модифицированный проект, написанный Vicyorus, на основе другого модуля, который ныне не работоспособенWont start up, от Hairr. Он используется для создания чат-бота, который будет иметь уже при старте своей работы некоторый список команд и вести запись происходящего в чате (логи). Версии языка: Python 2.7. Pywikibot Этим фреймворком можно пользоваться не только на , но и на других википроектах, хотя первоначально он разрабатывался для Википедии, был выпущен в 2002 году, последняя его версия — 3.0. Скачать его можно на сайте MediaWiki, пункт «Install Pywikibot». Для его использования нужно установить requests. Фреймворк содержит множество скриптов, при использовании некоторых из них не требуют дополнительных пакетов, но другие из них могут не заработать без этих пакетов (со списком скриптов и их зависимостей можно ознакомиться здесь). Чтобы установить зависимости, надо использовать следующую команду в терминале, где name — это имя пакета, например requests (если работа ведется с операционной системы Linux, то может потребоваться перед всей командой ввести sudo): pip install name можно установить все рекомендуемые пакеты для лучшей работы с фреймворком Pywikibot: pip install -r requirements.txt Если бот не будет работать на Википедии, то придется создать family-file. Это можно сделать вручную (подробнее об этом можно почитать здесь) либо через терминал: python generate_family_file.py Далее потребуется файл с настройками: python generate_user_files.py Для входа в аккаунт нужно запустить файл pwb.py: python pwb.py login Получив аккаунт разработчика (ориг. Developer account), можно разрабатывать свои собственные скрипты для бота (для этого участнику нужно написать письмо, над чем он собирается работать). У разработчиков фреймворка Pywikibot действуют определенные правила оформления программного кода и использования версий языка PythonCoding conventions PythonPywikibot Development Guidelines. VicBot После скачивания проекта VicBot с сайта GitHub следует установить requests. Для этого надо открыть терминал и ввести следующее (если работа ведется с операционной системы Linux, то может потребоваться перед всей командой ввести sudo): pip install requests В скачанной папке должен быть файл config.sample.json, в который нужно ввести ник бота на , пароль от его аккаунта и вики, в чат которой он зайдет (например, Вики Сообщества — ru.community; так как хостинг меняет URL и у некоторых вики он уже изменен, то придется поправить исходный код в файле vicbot.py). После всех действий этот файл надо переименовать в config.json и запустить vicbot.py через терминал: python vicbot.py Список доступных команд с самого начала работы бота в чате предоставлен ниже: Примечания Категория:Языки разметки и программирования